package com.kantboot.api.lbs.service.impl;

import com.kantboot.api.lbs.domain.entity.ApiLbsAd;
import com.kantboot.api.lbs.repository.ApiLbsAdRepository;
import com.kantboot.api.lbs.service.IApiLbsAdService;
import com.kantboot.api.lbs.util.TencentLbsUtil;
import com.kantboot.system.setting.service.ISysSettingService;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 获取地理位置
 */
@Service
public class ApiLbsAdServiceImpl implements IApiLbsAdService {

    @Resource
    private ISysSettingService settingService;

    @Resource
    private ApiLbsAdRepository repository;

    /**
     * 根据经纬度获取地理位置
     */
    @Override
    public ApiLbsAd getByLngAndLat(String lng, String lat) {
        // 为什么使用数组
        // 因为假设了一个场景
        // 很容易出现朋友在旁边分享，并且点进去，如果加锁，那么就会出现很多人在等待，大大降低了并发量
        List<ApiLbsAd> byLngAndLat = repository.findByLngAndLat(lng, lat);
        if (byLngAndLat != null && !byLngAndLat.isEmpty()) {
            return byLngAndLat.get(0);
        }
        String key = settingService.getValue("lbs", "tencentMapApiKey");
        ApiLbsAd lbs = TencentLbsUtil.byLngAndLat(lng, lat, key);
        return repository.save(lbs);
    }


}
